In the field of semiconductor memories, flash memories have become rather popular, because they combine the capability of storing relatively large amounts of data with the possibility of modifying their content directly in the field.
Flash memories are, for example, used to store the code to be executed by data processing units (e.g., microcontrollers, microprocessors, coprocessors, digital signal processors and the like) in a variety of electronic apparatuses, such as personal computers, mobile phones, set-top boxes for cable or satellite television, videogame consoles, just to mention some.
In particular, by using flash memories, it is possible to modify the stored code without having to remove the memory component from the respective socket. It has thus become possible to, e.g., change the code, fix code bugs, update the code version directly at the premises of the users; the new code can be, for example, downloaded over the internet, or received directly by a mobile phone from the service provider company.
There are applications in which these possibilities offered by flash memories raise problems of security. Electronic piracy acts may for example cause the code stored in the memory to be corrupted.
A family of flash memories produced by Intel® include a 128-bit One-Time Programmable (OTP) protection register that can be used to increase the security of a system design by allowing tracking and fraud protection. For example, the number contained in the protection register can be used to match the Flash memory component with other components of an electronic system, such as the CPU or an ASIC, preventing device substitution. The 128 bits of the OTP protection register are divided into two 64-bit segments. One of these segments is programmed at the factory with a unique 64-bit number, which cannot be changed. The other segment is left blank for customer designers to program as desired. Once the customer segment is programmed, it can be locked by programming bits in a lock word part of the OTP register, so as to prevent reprogramming of the customer-reserved 64-bit segment. This lock cannot be reversed by the customer.
The OTP protection register does not however allow avoiding fraudulent or generally unwanted alteration of the content of the memory storage area, where the program code and/or data are stored.
Therefore, there is the need of devising some scheme of protection of the memory content against fraudulent changes or even simply unwanted corruption.